Given a binary array nums
and an integer k
, return the maximum number of consecutive1
's in the array if you can flip at mostk
0
's.
Input: nums = [1,1,1,0,0,0,1,1,1,1,0], k = 2 Output: 6 Explanation: [1,1,1,0,0,1,1,1,1,1,1] Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.
Input: nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], k = 3 Output: 10 Explanation: [0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1] Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.
1 <= nums.length <= 105
nums[i]
is either0
or1
.0 <= k <= nums.length
implSolution{pubfnlongest_ones(nums:Vec<i32>,k:i32) -> i32{letmut l = 0;letmut r = 0;letmut count0 = 0;letmut ret = 0;while r < nums.len(){if nums[r] == 0{ count0 += 1;while count0 > k {if nums[l] == 0{ count0 -= 1;} l += 1;}} r += 1; ret = ret.max(r - l);} ret asi32}}